/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.





Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/

 

#ifndef VmModel_h
#define VmModel_h
#import <JDCloudOCSDKVpc/JDCloudOCSDKVpc.h>
#import <JDCloudOCSDKDisk/JDCloudOCSDKDisk.h>
#import <JDCloudOCSDKCharge/JDCloudOCSDKCharge.h>

@interface SecurityGroupSimple :NSObject

/// 安全组ID
@property (strong,nonatomic,nonnull)  NSString*  groupId;

/// 安全组名称
@property (strong,nonatomic,nonnull)  NSString*  groupName;


-(id) initWithGroupId:(NSString*) groupId
    groupName:(NSString*)groupName;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceTemplateElasticIpSpec :NSObject

/// 弹性公网IP的限速（单位：MB）
@property (strong,nonatomic,nonnull)  NSNumber*  bandwidthMbps;

/// IP服务商，取值为BGP,nonBGP
@property (strong,nonatomic,nonnull)  NSString*  provider;

/// 计费类型，支持按带宽计费(bandwith)，按流量计费(flow)
@property (strong,nonatomic,nonnull)  NSString*  chargeMode;


-(id) initWithBandwidthMbps:(NSNumber*) bandwidthMbps
    provider:(NSString*)provider
    chargeMode:(NSString*)chargeMode;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceTemplateDisk :NSObject

/// 云硬盘类型，取值为 ssd、premium-hdd、hdd.std1、ssd.gp1、ssd.io1
@property (strong,nonatomic,nonnull)  NSString*  diskType;

/// 云硬盘大小，单位为 GiB；ssd 类型取值范围[20,1000]GB，步长为10G，premium-hdd 类型取值范围[20,3000]GB，步长为10G，hdd.std1、ssd.gp1、ssd.io1 类型取值范围[20-16000]GB，步长为10GB
@property (strong,nonatomic,nonnull)  NSNumber*  diskSizeGB;

/// 用于创建云硬盘的快照ID
@property (strong,nonatomic,nonnull)  NSString*  snapshotId;


-(id) initWithDiskType:(NSString*) diskType
    diskSizeGB:(NSNumber*)diskSizeGB
    snapshotId:(NSString*)snapshotId;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceTemplateNetworkInterface :NSObject

/// 子网ID
@property (strong,nonatomic,nonnull)  NSString*  subnetId;

/// 安全组ID列表
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  securityGroups;

/// PortSecurity，取值为0或者1，默认为1
@property (strong,nonatomic,nonnull)  NSNumber*  sanityCheck;


-(id) initWithSubnetId:(NSString*) subnetId
    securityGroups:(NSArray<NSString*>*)securityGroups
    sanityCheck:(NSNumber*)sanityCheck;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceTemplateElasticIp :NSObject

/// 弹性公网IP的限速（单位：MB）
@property (strong,nonatomic,nonnull)  NSNumber*  bandwidthMbps;

/// IP服务商，取值为BGP,nonBGP
@property (strong,nonatomic,nonnull)  NSString*  provider;

/// 计费类型，支持按带宽计费(bandwith)，按流量计费(flow)
@property (strong,nonatomic,nonnull)  NSString*  chargeMode;


-(id) initWithBandwidthMbps:(NSNumber*) bandwidthMbps
    provider:(NSString*)provider
    chargeMode:(NSString*)chargeMode;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Ag :NSObject

/// 高可用组名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 高可用组id
@property (strong,nonatomic,nonnull)  NSString*  idValue;


-(id) initWithName:(NSString*) name
    idValue:(NSString*)idValue;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface VmQuota :NSObject

/// 资源类型[instance，keypair，image，instanceTemplate]
@property (strong,nonatomic,nonnull)  NSString*  resourceType;

/// 配额上限
@property (strong,nonatomic,nonnull)  NSNumber*  limit;

/// 已用配额
@property (strong,nonatomic,nonnull)  NSNumber*  used;


-(id) initWithResourceType:(NSString*) resourceType
    limit:(NSNumber*)limit
    used:(NSNumber*)used;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface LocalDisk :NSObject

/// 磁盘类型，取值范围{ssd、premium-hdd、hdd.std1、ssd.gp1、ssd.io1}
@property (strong,nonatomic,nonnull)  NSString*  diskType;

/// 磁盘大小
@property (strong,nonatomic,nonnull)  NSNumber*  diskSizeGB;


-(id) initWithDiskType:(NSString*) diskType
    diskSizeGB:(NSNumber*)diskSizeGB;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Gpu :NSObject

/// GPU型号
@property (strong,nonatomic,nonnull)  NSString*  model;

/// GPU数量
@property (strong,nonatomic,nonnull)  NSNumber*  number;


-(id) initWithModel:(NSString*) model
    number:(NSNumber*)number;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceTypeState :NSObject

/// 可用区
@property (strong,nonatomic,nonnull)  NSString*  az;

/// 可售卖情况，true:可售卖、false:已售罄不可用
@property (strong,nonatomic,nonnull)  NSNumber*  inStock;


-(id) initWithAz:(NSString*) az
    inStock:(NSNumber*)inStock;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceTemplateDiskSpec :NSObject

/// 云硬盘类型，取值为ssd、premium-hdd、hdd.std1、ssd.gp1、ssd.io1
@property (strong,nonatomic,nonnull)  NSString*  diskType;

/// 云硬盘大小，单位为 GiB；ssd 类型取值范围[20,1000]GB，步长为10G，premium-hdd 类型取值范围[20,3000]GB，步长为10G，hdd.std1、ssd.gp1、ssd.io1 类型取值范围[20-16000]GB，步长为10GB
@property (strong,nonatomic,nonnull)  NSNumber*  diskSizeGB;

/// 用于创建云硬盘的快照ID
@property (strong,nonatomic,nonnull)  NSString*  snapshotId;


-(id) initWithDiskType:(NSString*) diskType
    diskSizeGB:(NSNumber*)diskSizeGB
    snapshotId:(NSString*)snapshotId;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface VmTagFilter :NSObject

/// Tag键
@property (strong,nonatomic,nonnull)  NSString*  key;

/// Tag值
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  values;


-(id) initWithKey:(NSString*) key
    values:(NSArray<NSString*>*)values;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceTemplateNetworkInterfaceSpec :NSObject

/// 子网ID
@property (strong,nonatomic,nonnull)  NSString*  subnetId;

/// 安全组ID列表
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  securityGroups;

/// PortSecurity，取值为0或者1，默认为1
@property (strong,nonatomic,nonnull)  NSNumber*  sanityCheck;


-(id) initWithSubnetId:(NSString*) subnetId
    securityGroups:(NSArray<NSString*>*)securityGroups
    sanityCheck:(NSNumber*)sanityCheck;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Keypair :NSObject

/// 密钥对名称
@property (strong,nonatomic,nonnull)  NSString*  keyName;

/// 密钥对的指纹，根据 RFC4716 定义的公钥指纹格式，采用 MD5 信息摘要算法。
@property (strong,nonatomic,nonnull)  NSString*  keyFingerprint;

/// 创建时间
@property (strong,nonatomic,nonnull)  NSString*  createTime;


-(id) initWithKeyName:(NSString*) keyName
    keyFingerprint:(NSString*)keyFingerprint
    createTime:(NSString*)createTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Userdata :NSObject

/// 键
@property (strong,nonatomic,nonnull)  NSString*  key;

/// 值
@property (strong,nonatomic,nonnull)  NSString*  value;


-(id) initWithKey:(NSString*) key
    value:(NSString*)value;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ImageInstanceTypeConstraint :NSObject

/// 限制类型。取值：excludes：不支持的实例类型；includes：支持的实例类型。
@property (strong,nonatomic,nonnull)  NSString*  constraintsType;

/// 实例规格列表
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  instanceTypes;


-(id) initWithConstraintsType:(NSString*) constraintsType
    instanceTypes:(NSArray<NSString*>*)instanceTypes;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface UserSysDisk :NSObject

/// 用户pin
@property (strong,nonatomic,nonnull)  NSString*  pin;

/// 地域
@property (strong,nonatomic,nonnull)  NSString*  region;

/// 系统类型
@property (strong,nonatomic,nonnull)  NSString*  systemType;

/// 默认本地盘系统盘大小
@property (strong,nonatomic,nonnull)  NSNumber*  systemDiskSize;


-(id) initWithPin:(NSString*) pin
    region:(NSString*)region
    systemType:(NSString*)systemType
    systemDiskSize:(NSNumber*)systemDiskSize;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceStatus :NSObject

/// 云主机ID
@property (strong,nonatomic,nonnull)  NSString*  instanceId;

/// &lt;a href&#x3D;&quot;http://docs.jdcloud.com/virtual-machines/api/vm_status&quot;&gt;参考云主机状态&lt;/a&gt;
@property (strong,nonatomic,nonnull)  NSString*  status;


-(id) initWithInstanceId:(NSString*) instanceId
    status:(NSString*)status;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface CopyImage :NSObject

/// 复制后的目标镜像ID
@property (strong,nonatomic,nonnull)  NSString*  destinationImageId;

/// 源镜像ID
@property (strong,nonatomic,nonnull)  NSString*  sourceImageId;


-(id) initWithDestinationImageId:(NSString*) destinationImageId
    sourceImageId:(NSString*)sourceImageId;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceDiskAttribute :NSObject

/// 云硬盘ID
@property (strong,nonatomic,nonnull)  NSString*  diskId;

/// 随云主机一起删除，删除主机时自动删除此磁盘，默认为false，本地盘(local)不能更改此值。
   /// 如果云主机中的数据盘(cloud)是包年包月计费方式，此参数不生效。
   /// 如果云主机中的数据盘(cloud)是共享型数据盘，此参数不生效。
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  autoDelete;


-(id) initWithDiskId:(NSString*) diskId
    autoDelete:(NSNumber*)autoDelete;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstancePrivateIpAddress :NSObject

/// 云主机ID
@property (strong,nonatomic,nonnull)  NSString*  instanceId;

/// 主网卡内网主IP地址
@property (strong,nonatomic,nonnull)  NSString*  privateIpAddress;


-(id) initWithInstanceId:(NSString*) instanceId
    privateIpAddress:(NSString*)privateIpAddress;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceNetworkAttribute :NSObject

/// 弹性网卡ID
@property (strong,nonatomic,nonnull)  NSString*  networkInterfaceId;

/// 随主机自动删除，默认为False
@property (strong,nonatomic,nonnull)  NSNumber*  autoDelete;


-(id) initWithNetworkInterfaceId:(NSString*) networkInterfaceId
    autoDelete:(NSNumber*)autoDelete;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface TaskInfo :NSObject

/// 任务id
@property (strong,nonatomic,nonnull)  NSNumber*  taskId;

/// 任务操作类型
@property (strong,nonatomic,nonnull)  NSString*  action;

/// 任务状态，pending,running,failed,finished
@property (strong,nonatomic,nonnull)  NSString*  taskStatus;

/// 任务进度，0-100
@property (strong,nonatomic,nonnull)  NSNumber*  progress;

/// 额外信息
@property (strong,nonatomic,nonnull)  NSString*  message;

/// 任务创建时间
@property (strong,nonatomic,nonnull)  NSString*  createdTime;

/// 任务完成时间
@property (strong,nonatomic,nonnull)  NSString*  finishedTime;


-(id) initWithTaskId:(NSNumber*) taskId
    action:(NSString*)action
    taskStatus:(NSString*)taskStatus
    progress:(NSNumber*)progress
    message:(NSString*)message
    createdTime:(NSString*)createdTime
    finishedTime:(NSString*)finishedTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceNetworkInterface :NSObject

/// 弹性网卡ID
@property (strong,nonatomic,nonnull)  NSString*  networkInterfaceId;

/// 以太网地址
@property (strong,nonatomic,nonnull)  NSString*  macAddress;

/// 虚拟网络ID
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// 子网ID
@property (strong,nonatomic,nonnull)  NSString*  subnetId;

/// SecurityGroups
@property (strong,nonatomic,nonnull)  NSArray<SecurityGroupSimple*>*  securityGroups;

/// 源和目标IP地址校验，取值为0或者1
@property (strong,nonatomic,nonnull)  NSNumber*  sanityCheck;

/// 网卡主IP
@property (strong,nonatomic,nonnull)  NetworkInterfacePrivateIp*  primaryIp;

/// 网卡辅IP
@property (strong,nonatomic,nonnull)  NSArray<NetworkInterfacePrivateIp*>*  secondaryIps;


-(id) initWithNetworkInterfaceId:(NSString*) networkInterfaceId
    macAddress:(NSString*)macAddress
    vpcId:(NSString*)vpcId
    subnetId:(NSString*)subnetId
    securityGroups:(NSArray<SecurityGroupSimple*>*)securityGroups
    sanityCheck:(NSNumber*)sanityCheck
    primaryIp:(NetworkInterfacePrivateIp*)primaryIp
    secondaryIps:(NSArray<NetworkInterfacePrivateIp*>*)secondaryIps;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceNetworkInterfaceAttachment :NSObject

/// 设备Index
@property (strong,nonatomic,nonnull)  NSNumber*  deviceIndex;

/// 指明删除实例时是否删除网卡，默认true；当前只能是true
@property (strong,nonatomic,nonnull)  NSNumber*  autoDelete;

/// 网卡接口规范
@property (strong,nonatomic,nonnull)  InstanceNetworkInterface*  networkInterface;


-(id) initWithDeviceIndex:(NSNumber*) deviceIndex
    autoDelete:(NSNumber*)autoDelete
    networkInterface:(InstanceNetworkInterface*)networkInterface;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceTemplateDiskAttachment :NSObject

/// 磁盘分类，取值为本地盘(local)或者数据盘(cloud)。
   /// 系统盘支持本地盘(local)或者云硬盘(cloud)。系统盘选择local类型，必须使用localDisk类型的镜像；同理系统盘选择cloud类型，必须使用cloudDisk类型的镜像。
   /// 数据盘仅支持云硬盘(cloud)。
   /// 
@property (strong,nonatomic,nonnull)  NSString*  diskCategory;

/// 随云主机一起删除，删除主机时自动删除此磁盘，默认为true，本地盘(local)不能更改此值。
   /// 如果云主机中的数据盘(cloud)是包年包月计费方式，此参数不生效。
   /// 如果云主机中的数据盘(cloud)是共享型数据盘，此参数不生效。
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  autoDelete;

/// 数据盘配置
@property (strong,nonatomic,nonnull)  InstanceTemplateDisk*  instanceTemplateDisk;

/// 数据盘逻辑挂载点，取值范围：vda,vdb,vdc,vdd,vde,vdf,vdg,vdh,vdi,vmj,vdk,vdl,vdm。系统盘不需要使用，数据盘时才能够使用。
@property (strong,nonatomic,nonnull)  NSString*  deviceName;

/// 排除设备，使用此参数noDevice配合deviceName一起使用。
   /// 创建整机镜像：如deviceName:vdb、noDevice:true，则表示云主机中的数据盘vdb不参与创建镜像。
   /// 创建模板：如deviceName:vdb、noDevice:true，则表示镜像中的数据盘vdb不参与创建主机。
   /// 创建主机：如deviceName:vdb、noDevice:true，则表示镜像中的数据盘vdb，或者模板(使用模板创建主机)中的数据盘vdb不参与创建主机。
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  noDevice;


-(id) initWithDiskCategory:(NSString*) diskCategory
    autoDelete:(NSNumber*)autoDelete
    instanceTemplateDisk:(InstanceTemplateDisk*)instanceTemplateDisk
    deviceName:(NSString*)deviceName
    noDevice:(NSNumber*)noDevice;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceTemplateNetworkInterfaceAttachment :NSObject

/// 设备Index；主网卡的index必须为1；当前仅支持主网卡
@property (strong,nonatomic,nonnull)  NSNumber*  deviceIndex;

/// 指明删除实例时是否删除网卡，默认true；当前只能是true
@property (strong,nonatomic,nonnull)  NSNumber*  autoDelete;

/// 网卡接口规范；此字段当前必填
@property (strong,nonatomic,nonnull)  InstanceTemplateNetworkInterface*  networkInterface;


-(id) initWithDeviceIndex:(NSNumber*) deviceIndex
    autoDelete:(NSNumber*)autoDelete
    networkInterface:(InstanceTemplateNetworkInterface*)networkInterface;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceType :NSObject

/// 实例规格类型
@property (strong,nonatomic,nonnull)  NSString*  family;

/// 实例规格，比如g.b1.2xlarge
@property (strong,nonatomic,nonnull)  NSString*  instanceTypeValue;

/// cpu个数
@property (strong,nonatomic,nonnull)  NSNumber*  cpu;

/// 内存大小
@property (strong,nonatomic,nonnull)  NSNumber*  memoryMB;

/// 支持弹性网卡的数量
@property (strong,nonatomic,nonnull)  NSNumber*  nicLimit;

/// 描述
@property (strong,nonatomic,nonnull)  NSString*  desc;

/// 规格状态
@property (strong,nonatomic,nonnull)  NSArray<InstanceTypeState*>*  state;

/// Gpu配置
@property (strong,nonatomic,nonnull)  Gpu*  gpu;

/// 本地缓存盘配置，目前只有Gpu规格上才有
@property (strong,nonatomic,nonnull)  NSArray<LocalDisk*>*  localDisks;


-(id) initWithFamily:(NSString*) family
    instanceTypeValue:(NSString*)instanceTypeValue
    cpu:(NSNumber*)cpu
    memoryMB:(NSNumber*)memoryMB
    nicLimit:(NSNumber*)nicLimit
    desc:(NSString*)desc
    state:(NSArray<InstanceTypeState*>*)state
    gpu:(Gpu*)gpu
    localDisks:(NSArray<LocalDisk*>*)localDisks;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceDiskAttachment :NSObject

/// 磁盘分类，取值为本地盘(local)或者数据盘(cloud)。
   /// 系统盘支持本地盘(local)或者云硬盘(cloud)。系统盘选择local类型，必须使用localDisk类型的镜像；同理系统盘选择cloud类型，必须使用cloudDisk类型的镜像。
   /// 数据盘仅支持云硬盘(cloud)。
   /// 
@property (strong,nonatomic,nonnull)  NSString*  diskCategory;

/// 随云主机一起删除，删除主机时自动删除此磁盘，默认为true，本地盘(local)不能更改此值。
   /// 如果云主机中的数据盘(cloud)是包年包月计费方式，此参数不生效。
   /// 如果云主机中的数据盘(cloud)是共享型数据盘，此参数不生效。
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  autoDelete;

/// 本地磁盘配置
@property (strong,nonatomic,nonnull)  LocalDisk*  localDisk;

/// 云硬盘配置
@property (strong,nonatomic,nonnull)  Disk*  cloudDisk;

/// 数据盘逻辑挂载点，取值范围：vda,vdb,vdc,vdd,vde,vdf,vdg,vdh,vdi,vmj,vdk,vdl,vdm
@property (strong,nonatomic,nonnull)  NSString*  deviceName;

/// 数据盘挂载状态，取值范围：attaching,detaching,attached,detached,error_attach,error_detach
@property (strong,nonatomic,nonnull)  NSString*  status;


-(id) initWithDiskCategory:(NSString*) diskCategory
    autoDelete:(NSNumber*)autoDelete
    localDisk:(LocalDisk*)localDisk
    cloudDisk:(Disk*)cloudDisk
    deviceName:(NSString*)deviceName
    status:(NSString*)status;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceTemplateNetworkInterfaceAttachmentSpec :NSObject

/// 设备Index；主网卡的index必须为1；当前仅支持主网卡
@property (strong,nonatomic,nonnull)  NSNumber*  deviceIndex;

/// 指明删除实例时是否删除网卡，默认true；当前只能是true
@property (strong,nonatomic,nonnull)  NSNumber*  autoDelete;

/// 网卡接口规范；此字段当前必填
@property (strong,nonatomic,nonnull)  InstanceTemplateNetworkInterfaceSpec*  networkInterface;


-(id) initWithDeviceIndex:(NSNumber*) deviceIndex
    autoDelete:(NSNumber*)autoDelete
    networkInterface:(InstanceTemplateNetworkInterfaceSpec*)networkInterface;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceTemplateDiskAttachmentSpec :NSObject

/// 磁盘分类，取值为本地盘(local)或者数据盘(cloud)。
   /// 系统盘支持本地盘(local)或者云硬盘(cloud)。系统盘选择local类型，必须使用localDisk类型的镜像；同理系统盘选择cloud类型，必须使用cloudDisk类型的镜像。
   /// 数据盘仅支持云硬盘(cloud)。
   /// 
@property (strong,nonatomic,nonnull)  NSString*  diskCategory;

/// 随云主机一起删除，删除主机时自动删除此磁盘，默认为true，本地盘(local)不能更改此值。
   /// 如果云主机中的数据盘(cloud)是包年包月计费方式，此参数不生效。
   /// 如果云主机中的数据盘(cloud)是共享型数据盘，此参数不生效。
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  autoDelete;

/// 数据盘规格
@property (strong,nonatomic,nonnull)  InstanceTemplateDiskSpec*  cloudDiskSpec;

/// 数据盘逻辑挂载点，取值范围：vda,vdb,vdc,vdd,vde,vdf,vdg,vdh,vdi,vmj,vdk,vdl,vdm
@property (strong,nonatomic,nonnull)  NSString*  deviceName;

/// 排除设备，使用此参数noDevice配合deviceName一起使用。
   /// 创建模板：如deviceName:vdb、noDevice:true，则表示镜像中的数据盘vdb不参与创建主机。
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  noDevice;


-(id) initWithDiskCategory:(NSString*) diskCategory
    autoDelete:(NSNumber*)autoDelete
    cloudDiskSpec:(InstanceTemplateDiskSpec*)cloudDiskSpec
    deviceName:(NSString*)deviceName
    noDevice:(NSNumber*)noDevice;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceDiskAttachmentSpec :NSObject

/// 磁盘分类，取值为本地盘(local)或者云硬盘(cloud)。
   /// 系统盘支持本地盘(local)或者云硬盘(cloud)。系统盘选择local类型，必须使用localDisk类型的镜像；同理系统盘选择cloud类型，必须使用cloudDisk类型的镜像。
   /// 数据盘仅支持云硬盘(cloud)。
   /// 
@property (strong,nonatomic,nonnull)  NSString*  diskCategory;

/// 是否随云主机一起删除，即删除主机时是否自动删除此磁盘，默认为true，本地盘(local)不能更改此值。
   /// 如果云主机中的数据盘(cloud)是包年包月计费方式，此参数不生效。
   /// 如果云主机中的数据盘(cloud)是共享型数据盘，此参数不生效。
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  autoDelete;

/// 数据盘配置
@property (strong,nonatomic,nonnull)  DiskSpec*  cloudDiskSpec;

/// 数据盘逻辑挂载点，取值范围：vda,vdb,vdc,vdd,vde,vdf,vdg,vdh,vdi,vmj,vdk,vdl,vdm
@property (strong,nonatomic,nonnull)  NSString*  deviceName;

/// 排除设备，使用此参数noDevice配合deviceName一起使用。
   /// 创建整机镜像：如deviceName:vdb、noDevice:true，则表示云主机中的数据盘vdb不参与创建镜像。
   /// 创建模板：如deviceName:vdb、noDevice:true，则表示镜像中的数据盘vdb不参与创建主机。
   /// 创建主机：如deviceName:vdb、noDevice:true，则表示镜像中的数据盘vdb，或者模板(使用模板创建主机)中的数据盘vdb不参与创建主机。
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  noDevice;


-(id) initWithDiskCategory:(NSString*) diskCategory
    autoDelete:(NSNumber*)autoDelete
    cloudDiskSpec:(DiskSpec*)cloudDiskSpec
    deviceName:(NSString*)deviceName
    noDevice:(NSNumber*)noDevice;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Instance :NSObject

/// 云主机ID
@property (strong,nonatomic,nonnull)  NSString*  instanceId;

/// 云主机名称
@property (strong,nonatomic,nonnull)  NSString*  instanceName;

/// 实例规格
@property (strong,nonatomic,nonnull)  NSString*  instanceType;

/// 主网卡所属VPC的ID
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// 主网卡所属子网的ID
@property (strong,nonatomic,nonnull)  NSString*  subnetId;

/// 主网卡主IP地址
@property (strong,nonatomic,nonnull)  NSString*  privateIpAddress;

/// 主网卡主IP绑定弹性IP的ID
@property (strong,nonatomic,nonnull)  NSString*  elasticIpId;

/// 主网卡主IP绑定弹性IP的地址
@property (strong,nonatomic,nonnull)  NSString*  elasticIpAddress;

/// 云主机状态，&lt;a href&#x3D;&quot;http://docs.jdcloud.com/virtual-machines/api/vm_status&quot;&gt;参考云主机状态&lt;/a&gt;
@property (strong,nonatomic,nonnull)  NSString*  status;

/// 云主机描述
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// 镜像ID
@property (strong,nonatomic,nonnull)  NSString*  imageId;

/// 系统盘配置
@property (strong,nonatomic,nonnull)  InstanceDiskAttachment*  systemDisk;

/// 数据盘配置
@property (strong,nonatomic,nonnull)  NSArray<InstanceDiskAttachment*>*  dataDisks;

/// 主网卡配置
@property (strong,nonatomic,nonnull)  InstanceNetworkInterfaceAttachment*  primaryNetworkInterface;

/// 辅助网卡配置
@property (strong,nonatomic,nonnull)  NSArray<InstanceNetworkInterfaceAttachment*>*  secondaryNetworkInterfaces;

/// 创建时间
@property (strong,nonatomic,nonnull)  NSString*  launchTime;

/// 云主机所在可用区
@property (strong,nonatomic,nonnull)  NSString*  az;

/// 密钥对名称
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  keyNames;

/// 计费信息
@property (strong,nonatomic,nonnull)  Charge*  charge;

/// 高可用组，如果创建云主机使用了高可用组，此处可展示高可用组名称
@property (strong,nonatomic,nonnull)  Ag*  ag;

/// 高可用组中的错误域
@property (strong,nonatomic,nonnull)  NSString*  faultDomain;

/// Tag信息
@property (strong,nonatomic,nonnull)  NSArray<Tag*>*  tags;


-(id) initWithInstanceId:(NSString*) instanceId
    instanceName:(NSString*)instanceName
    instanceType:(NSString*)instanceType
    vpcId:(NSString*)vpcId
    subnetId:(NSString*)subnetId
    privateIpAddress:(NSString*)privateIpAddress
    elasticIpId:(NSString*)elasticIpId
    elasticIpAddress:(NSString*)elasticIpAddress
    status:(NSString*)status
    descriptionValue:(NSString*)descriptionValue
    imageId:(NSString*)imageId
    systemDisk:(InstanceDiskAttachment*)systemDisk
    dataDisks:(NSArray<InstanceDiskAttachment*>*)dataDisks
    primaryNetworkInterface:(InstanceNetworkInterfaceAttachment*)primaryNetworkInterface
    secondaryNetworkInterfaces:(NSArray<InstanceNetworkInterfaceAttachment*>*)secondaryNetworkInterfaces
    launchTime:(NSString*)launchTime
    az:(NSString*)az
    keyNames:(NSArray<NSString*>*)keyNames
    charge:(Charge*)charge
    ag:(Ag*)ag
    faultDomain:(NSString*)faultDomain
    tags:(NSArray<Tag*>*)tags;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ImageConstraint :NSObject

/// 镜像ID
@property (strong,nonatomic,nonnull)  NSString*  imageId;

/// 使用镜像创建实例的规格限制
@property (strong,nonatomic,nonnull)  ImageInstanceTypeConstraint*  imageInstanceTypeConstraint;


-(id) initWithImageId:(NSString*) imageId
    imageInstanceTypeConstraint:(ImageInstanceTypeConstraint*)imageInstanceTypeConstraint;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceNetworkInterfaceAttachmentSpec :NSObject

/// 网卡设备Index，主网卡只能是1
@property (strong,nonatomic,nonnull)  NSNumber*  deviceIndex;

/// 网卡接口规范
@property (strong,nonatomic,nonnull)  NetworkInterfaceSpec*  networkInterface;


-(id) initWithDeviceIndex:(NSNumber*) deviceIndex
    networkInterface:(NetworkInterfaceSpec*)networkInterface;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Image :NSObject

/// 镜像ID
@property (strong,nonatomic,nonnull)  NSString*  imageId;

/// 镜像名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 镜像的操作系统发行版。取值：Ubuntu,CentOS,Windows Server
@property (strong,nonatomic,nonnull)  NSString*  platform;

/// 镜像的操作系统版本。
@property (strong,nonatomic,nonnull)  NSString*  osVersion;

/// 镜像架构。取值：i386,x86_64
@property (strong,nonatomic,nonnull)  NSString*  architecture;

/// 镜像系统盘大小
@property (strong,nonatomic,nonnull)  NSNumber*  systemDiskSizeGB;

/// 镜像来源。取值：jcloud：官方镜像；marketplace：镜像市场镜像；self：用户自己的镜像；shared：其他用户分享的镜像
@property (strong,nonatomic,nonnull)  NSString*  imageSource;

/// 镜像的操作系统类型。取值：windows,linux
@property (strong,nonatomic,nonnull)  NSString*  osType;

/// &lt;a href&#x3D;&quot;http://docs.jdcloud.com/virtual-machines/api/image_status&quot;&gt;参考镜像状态&lt;/a&gt;
@property (strong,nonatomic,nonnull)  NSString*  status;

/// 创建时间
@property (strong,nonatomic,nonnull)  NSString*  createTime;

/// 镜像文件实际大小
@property (strong,nonatomic,nonnull)  NSNumber*  sizeMB;

/// 镜像描述
@property (strong,nonatomic,nonnull)  NSString*  desc;

/// 该镜像所有者的用户PIN
@property (strong,nonatomic,nonnull)  NSString*  ownerPin;

/// 镜像的使用权限，取值：all（所有人可用）， specifiedUsers（共享用户可用），ownerOnly（镜像所有者自己可用）
@property (strong,nonatomic,nonnull)  NSString*  launchPermission;

/// 镜像系统盘配置
@property (strong,nonatomic,nonnull)  InstanceDiskAttachment*  systemDisk;

/// 镜像数据盘映射信息
@property (strong,nonatomic,nonnull)  NSArray<InstanceDiskAttachment*>*  dataDisks;

/// 创建云盘系统盘所使用的云硬盘快照ID。系统盘类型为本地盘的镜像，此参数为空。
@property (strong,nonatomic,nonnull)  NSString*  snapshotId;

/// 镜像支持的系统盘类型。取值：localDisk：本地盘系统盘；cloudDisk：云盘系统盘。
@property (strong,nonatomic,nonnull)  NSString*  rootDeviceType;

/// 镜像复制和转换时的进度，仅显示数值，单位为百分比
@property (strong,nonatomic,nonnull)  NSString*  progress;


-(id) initWithImageId:(NSString*) imageId
    name:(NSString*)name
    platform:(NSString*)platform
    osVersion:(NSString*)osVersion
    architecture:(NSString*)architecture
    systemDiskSizeGB:(NSNumber*)systemDiskSizeGB
    imageSource:(NSString*)imageSource
    osType:(NSString*)osType
    status:(NSString*)status
    createTime:(NSString*)createTime
    sizeMB:(NSNumber*)sizeMB
    desc:(NSString*)desc
    ownerPin:(NSString*)ownerPin
    launchPermission:(NSString*)launchPermission
    systemDisk:(InstanceDiskAttachment*)systemDisk
    dataDisks:(NSArray<InstanceDiskAttachment*>*)dataDisks
    snapshotId:(NSString*)snapshotId
    rootDeviceType:(NSString*)rootDeviceType
    progress:(NSString*)progress;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceSpec :NSObject

/// 高可用组Id。指定了此参数后，只能通过高可用组关联的实例模板创建虚机，并且实例模板中的参数不可覆盖替换。实例模板以外的参数还可以指定。
@property (strong,nonatomic,nonnull)  NSString*  agId;

/// 实例模板id，如果没有使用高可用组，那么对于实例模板中没有的信息，需要使用创建虚机的参数进行补充，或者选择覆盖启动模板中的参数。
@property (strong,nonatomic,nonnull)  NSString*  instanceTemplateId;

/// 云主机所属的可用区。
@property (strong,nonatomic,nonnull)  NSString*  az;

/// 实例规格。可查询&lt;a href&#x3D;&quot;http://docs.jdcloud.com/virtual-machines/api/describeinstancetypes&quot;&gt;DescribeInstanceTypes&lt;/a&gt;接口获得指定地域或可用区的规格信息。
@property (strong,nonatomic,nonnull)  NSString*  instanceType;

/// 镜像ID。可查询&lt;a href&#x3D;&quot;http://docs.jdcloud.com/virtual-machines/api/describeimages&quot;&gt;DescribeImages&lt;/a&gt;接口获得指定地域的镜像信息。
@property (strong,nonatomic,nonnull)  NSString*  imageId;

/// 云主机名称，&lt;a href&#x3D;&quot;http://docs.jdcloud.com/virtual-machines/api/general_parameters&quot;&gt;参考公共参数规范&lt;/a&gt;。
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 密码，&lt;a href&#x3D;&quot;http://docs.jdcloud.com/virtual-machines/api/general_parameters&quot;&gt;参考公共参数规范&lt;/a&gt;。
@property (strong,nonatomic,nonnull)  NSString*  password;

/// 密钥对名称，当前只支持传入一个。
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  keyNames;

/// 主网卡主IP关联的弹性IP规格
@property (strong,nonatomic,nonnull)  ElasticIpSpec*  elasticIp;

/// 主网卡配置信息
@property (strong,nonatomic,nonnull)  InstanceNetworkInterfaceAttachmentSpec*  primaryNetworkInterface;

/// 系统盘配置信息
@property (strong,nonatomic,nonnull)  InstanceDiskAttachmentSpec*  systemDisk;

/// 数据盘配置信息，本地盘(local类型)做系统盘的云主机可挂载8块数据盘，云硬盘(cloud类型)做系统盘的云主机可挂载7块数据盘。
@property (strong,nonatomic,nonnull)  NSArray<InstanceDiskAttachmentSpec*>*  dataDisks;

/// 计费配置
   /// 云主机不支持按用量方式计费，默认为按配置计费。
   /// 打包创建数据盘的情况下，数据盘的计费方式只能与云主机保持一致。
   /// 打包创建弹性公网IP的情况下，若公网IP的计费方式没有指定为按用量计费，那么公网IP计费方式只能与云主机保持一致。
   /// 
@property (strong,nonatomic,nonnull)  ChargeSpec*  charge;

/// 元数据信息，目前只支持传入一个key为&quot;launch-script&quot;，表示首次启动脚本。value为base64格式。
   /// launch-script：linux系统支持bash和python，编码前须分别以 #!/bin/bash 和 #!/usr/bin/env python 作为内容首行;
   /// launch-script：windows系统支持bat和powershell，编码前须分别以 &lt;cmd&gt;&lt;/cmd&gt; 和 &lt;powershell&gt;&lt;/powershell&gt; 作为内容首、尾行。
   /// 
@property (strong,nonatomic,nonnull)  NSArray<Userdata*>*  userdata;

/// 主机描述，&lt;a href&#x3D;&quot;http://docs.jdcloud.com/virtual-machines/api/general_parameters&quot;&gt;参考公共参数规范&lt;/a&gt;。
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// 不使用模板中的密码。
   /// 仅当不使用Ag，并且使用了模板，并且password参数为空时，此参数(值为true)生效。
   /// 若使用模板创建虚机时，又指定了password参数时，此参数无效，以新指定的为准。
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  noPassword;

/// 不使用模板中的密钥。
   /// 仅当不使用Ag，并且使用了模板，并且keynames参数为空时，此参数(值为true)生效。
   /// 若使用模板创建虚机时，又指定了keynames参数时，此参数无效，以新指定的为准。
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  noKeyNames;

/// 不使用模板中的弹性公网IP。
   /// 仅当不使用Ag，并且使用了模板，并且elasticIp参数为空时，此参数(值为true)生效。
   /// 若使用模板创建虚机时，又指定了elasticIp参数时，此参数无效，以新指定的为准。
   /// 
@property (strong,nonatomic,nonnull)  NSNumber*  noElasticIp;

/// 用户普通标签集合
@property (strong,nonatomic,nonnull)  NSArray<Tag*>*  userTags;


-(id) initWithAgId:(NSString*) agId
    instanceTemplateId:(NSString*)instanceTemplateId
    az:(NSString*)az
    instanceType:(NSString*)instanceType
    imageId:(NSString*)imageId
    name:(NSString*)name
    password:(NSString*)password
    keyNames:(NSArray<NSString*>*)keyNames
    elasticIp:(ElasticIpSpec*)elasticIp
    primaryNetworkInterface:(InstanceNetworkInterfaceAttachmentSpec*)primaryNetworkInterface
    systemDisk:(InstanceDiskAttachmentSpec*)systemDisk
    dataDisks:(NSArray<InstanceDiskAttachmentSpec*>*)dataDisks
    charge:(ChargeSpec*)charge
    userdata:(NSArray<Userdata*>*)userdata
    descriptionValue:(NSString*)descriptionValue
    noPassword:(NSNumber*)noPassword
    noKeyNames:(NSNumber*)noKeyNames
    noElasticIp:(NSNumber*)noElasticIp
    userTags:(NSArray<Tag*>*)userTags;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceTemplateData :NSObject

/// 实例规格
@property (strong,nonatomic,nonnull)  NSString*  instanceType;

/// 主网卡所属VPC的ID
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// 镜像ID
@property (strong,nonatomic,nonnull)  NSString*  imageId;

/// 启动模板中是否包含自定义密码，true：包含密码，false：不包含密码
@property (strong,nonatomic,nonnull)  NSNumber*  includePassword;

/// 系统盘信息
@property (strong,nonatomic,nonnull)  InstanceTemplateDiskAttachment*  systemDisk;

/// 数据盘信息，本地盘(local类型)做系统盘的云主机可挂载8块数据盘，云硬盘(cloud类型)做系统盘的云主机可挂载7块数据盘。
@property (strong,nonatomic,nonnull)  NSArray<InstanceTemplateDiskAttachment*>*  dataDisks;

/// 主网卡信息
@property (strong,nonatomic,nonnull)  InstanceTemplateNetworkInterfaceAttachment*  primaryNetworkInterface;

/// 主网卡主IP关联的弹性IP规格
@property (strong,nonatomic,nonnull)  InstanceTemplateElasticIp*  elasticIp;

/// 密钥对名称；当前只支持一个
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  keyNames;


-(id) initWithInstanceType:(NSString*) instanceType
    vpcId:(NSString*)vpcId
    imageId:(NSString*)imageId
    includePassword:(NSNumber*)includePassword
    systemDisk:(InstanceTemplateDiskAttachment*)systemDisk
    dataDisks:(NSArray<InstanceTemplateDiskAttachment*>*)dataDisks
    primaryNetworkInterface:(InstanceTemplateNetworkInterfaceAttachment*)primaryNetworkInterface
    elasticIp:(InstanceTemplateElasticIp*)elasticIp
    keyNames:(NSArray<NSString*>*)keyNames;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceTemplate :NSObject

/// 启动模板ID
@property (strong,nonatomic,nonnull)  NSString*  idValue;

/// 启动模板名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 启动模板描述
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// 启动模板的数据
@property (strong,nonatomic,nonnull)  InstanceTemplateData*  instanceTemplateData;

/// 关联的高可用组(ag)信息
@property (strong,nonatomic,nonnull)  NSArray<Ag*>*  ags;

/// 创建时间
@property (strong,nonatomic,nonnull)  NSString*  createdTime;


-(id) initWithId:(NSString*) idValue
    name:(NSString*)name
    descriptionValue:(NSString*)descriptionValue
    instanceTemplateData:(InstanceTemplateData*)instanceTemplateData
    ags:(NSArray<Ag*>*)ags
    createdTime:(NSString*)createdTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceTemplateSpec :NSObject

/// 实例规格，可查询&lt;a href&#x3D;&quot;http://docs.jdcloud.com/virtual-machines/api/describeinstancetypes&quot;&gt;DescribeInstanceTypes&lt;/a&gt;接口获得指定地域或可用区的规格信息。
@property (strong,nonatomic,nonnull)  NSString*  instanceType;

/// 镜像ID，可查询&lt;a href&#x3D;&quot;http://docs.jdcloud.com/virtual-machines/api/describeimages&quot;&gt;DescribeImages&lt;/a&gt;接口获得指定地域的镜像信息。
@property (strong,nonatomic,nonnull)  NSString*  imageId;

/// 密码，&lt;a href&#x3D;&quot;http://docs.jdcloud.com/virtual-machines/api/general_parameters&quot;&gt;参考公共参数规范&lt;/a&gt;。
@property (strong,nonatomic,nonnull)  NSString*  password;

/// 密钥对名称；当前只支持一个
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  keyNames;

/// 主网卡主IP关联的弹性IP规格
@property (strong,nonatomic,nonnull)  InstanceTemplateElasticIpSpec*  elasticIp;

/// 主网卡配置信息
@property (strong,nonatomic,nonnull)  InstanceTemplateNetworkInterfaceAttachmentSpec*  primaryNetworkInterface;

/// 系统盘配置信息
@property (strong,nonatomic,nonnull)  InstanceTemplateDiskAttachmentSpec*  systemDisk;

/// 数据盘配置信息
@property (strong,nonatomic,nonnull)  NSArray<InstanceTemplateDiskAttachmentSpec*>*  dataDisks;


-(id) initWithInstanceType:(NSString*) instanceType
    imageId:(NSString*)imageId
    password:(NSString*)password
    keyNames:(NSArray<NSString*>*)keyNames
    elasticIp:(InstanceTemplateElasticIpSpec*)elasticIp
    primaryNetworkInterface:(InstanceTemplateNetworkInterfaceAttachmentSpec*)primaryNetworkInterface
    systemDisk:(InstanceTemplateDiskAttachmentSpec*)systemDisk
    dataDisks:(NSArray<InstanceTemplateDiskAttachmentSpec*>*)dataDisks;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end

#endif /* VmModel_h */
